package cn.iocoder.yudao.module.english.service.evaluationphrases;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.english.controller.admin.evaluationphrases.vo.EvaluationPhrasesPageReqVO;
import cn.iocoder.yudao.module.english.controller.admin.evaluationphrases.vo.EvaluationPhrasesSaveReqVO;
import cn.iocoder.yudao.module.english.dal.dataobject.evaluationphrases.EvaluationPhrasesDO;
import cn.iocoder.yudao.module.english.dal.mysql.evaluationphrases.EvaluationPhrasesMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;

/**
 * 评价常用语 Service 实现类
 *
 * @author 芋道源码
 */
@Service
@Validated
public class EvaluationPhrasesServiceImpl implements EvaluationPhrasesService {

    @Resource
    private EvaluationPhrasesMapper evaluationPhrasesMapper;

    @Override
    public Long createEvaluationPhrases(EvaluationPhrasesSaveReqVO createReqVO) {
        // 插入
        EvaluationPhrasesDO evaluationPhrases = BeanUtils.toBean(createReqVO, EvaluationPhrasesDO.class);
        evaluationPhrasesMapper.insert(evaluationPhrases);
        // 返回
        return evaluationPhrases.getId();
    }

    @Override
    public void updateEvaluationPhrases(EvaluationPhrasesSaveReqVO updateReqVO) {
        // 校验存在
        validateEvaluationPhrasesExists(updateReqVO.getId());
        // 更新
        EvaluationPhrasesDO updateObj = BeanUtils.toBean(updateReqVO, EvaluationPhrasesDO.class);
        evaluationPhrasesMapper.updateById(updateObj);
    }

    @Override
    public void deleteEvaluationPhrases(Long id) {
        // 校验存在
        validateEvaluationPhrasesExists(id);
        // 删除
        evaluationPhrasesMapper.deleteById(id);
    }

    private void validateEvaluationPhrasesExists(Long id) {
        if (evaluationPhrasesMapper.selectById(id) == null) {
//            throw exception(EVALUATION_PHRASES_NOT_EXISTS);
        }
    }

    @Override
    public EvaluationPhrasesDO getEvaluationPhrases(Long id) {
        return evaluationPhrasesMapper.selectById(id);
    }

    @Override
    public PageResult<EvaluationPhrasesDO> getEvaluationPhrasesPage(EvaluationPhrasesPageReqVO pageReqVO) {
        return evaluationPhrasesMapper.selectPage(pageReqVO);
    }

}